#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+5;
vector<pair<ll,ll>> g[N];
ll n,k; 
ll kn[N];
ll ret,path;
void dfs(ll faN,ll pN,ll target){
	if (kn[pN]==target){
		ret+=path;
		return;
	}
	for (auto& sonN:g[pN]){
		if (sonN.first!=faN){
			path+=sonN.second;
			dfs(pN,sonN.first,target);
		}
	}
	return;
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>k;
	for (ll i=1;i<=n-1;i++){
		ll a,b,c;
		cin>>a>>b>>c;
		g[a].push_back({b,c});
		g[b].push_back({a,c});
	}
	for (ll i=1;i<=k;i++){
		cin>>kn[i];
	}
	for (ll i=1;i<=k;i++){
		ret=0,path=0;
		for (ll j=1;j<=k;j++){
			if (j==i || j==k)continue;
			if (j+1==i){
				dfs(-1,kn[j],kn[j+2]);
			} 
			else dfs(-1,kn[j],kn[j+1]);
		} 
		if (i!=1)cout<<" ";
		cout<<ret;
	}
	return 0;
} 
